package productmodel

import "model/usermodel"

type Product struct {
	Id         uint64             `gorm:"column:id" json:"id"`
	Name       string             `gorm:"column:name" json:"name"`
	Users      usermodel.UserInfo `gorm:"ForeignKey:AuthorId;AssociationForeignKey:Id"`
	AuthorId   uint64             `gorm:"column:author_id" json:"authorId"`
	Category   Category           `gorm:"ForeignKey:CategoryId;AssociationForeignKey:Id"`
	CategoryId uint64             `gorm:"column:category_id" json:"categoryId"`
	CreateAt   uint64             `gorm:"column:createAt" json:"createAt"`
	UpdateAt   uint64             `gorm:"column:updateAt" json:"updateAt"`
	Images     []ProductImage
}

func (c *Product) TableName() string {
	return "tb_product"
}

type ProductImage struct {
	Id         uint64 `gorm:"column:id" json:"id"`
	ProductIdo uint64 `gorm:"column:producto_id" json:"productId"`
	ImageUrl   string `gorm:"column:image" json:"image"`
	CreateAt   uint64 `gorm:"column:createAt" json:"createAt"`
	UpdateAt   uint64 `gorm:"column:updateAt" json:"updateAt"`
}

func (c *ProductImage) TableName() string {
	return "tb_product_image"
}

type ProductResult struct {
	Id         uint64             `gorm:"column:id" json:"id"`
	Name       string             `gorm:"column:name" json:"name"`
	Users      usermodel.UserInfo `gorm:"ForeignKey:AuthorId;AssociationForeignKey:Id"`
	AuthorId   uint64             `gorm:"column:author_id" json:"authorId"`
	Category   Category           `gorm:"ForeignKey:CategoryId;AssociationForeignKey:Id"`
	CategoryId uint64             `gorm:"column:category_id" json:"categoryId"`
	CreateAt   uint64             `gorm:"column:createAt" json:"createAt"`
	UpdateAt   uint64             `gorm:"column:updateAt" json:"updateAt"`
	Images     []ProductImage
}

func (c *ProductResult) TableName() string {
	return "tb_product"
}

type Category struct {
	Id   uint64 `gorm:"column:id" json:"id"`
	Name string `gorm:"column:name" json:"name"`
}

func (c *Category) TableName() string {
	return "tb_category"
}
